<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
        <style>
            * {
                padding: 0;
                margin: 0;
                box-sizing: border-box;
            }
            body {
                margin: 300px;
            }
            .container {
                width: 600px;
                height: 300px;
                position: relative;
            }
            .content-list {
                width: 600px;
                height: 300px;
                position: relative;
                transition: all 0.9s;
            }
            .item {
                width: 100%;
                height: 100%;
                list-style: none;
                position: absolute;
                left: 0;
                top: 0;
                opacity: 0;
            }
            .item:nth-child(1) {
                background-color: red;
            }
            .item:nth-child(2) {
                background-color: green;
            }
            .item:nth-child(3) {
                background-color: blue;
            }
            .item:nth-child(4) {
                background-color: black;
            }
            .active {
                opacity: 1;
            }
            .order {
                position: absolute;
                left: 50%;
                transform: translateX(-50%);
                bottom: 10px;
                display: flex;
            }
            .item1 {
                width: 20px;
                height: 20px;
                margin-right: 10px;
                border-radius: 50%;
                background-color: white;
                list-style: none;
            }
            .item1Active {
                background: purple;
            }
            button {
                width: 20px;
                height: 30px;
            }
            .showBtn {
                display: block;
            }
            .hideBtn {
                display: none;
            }
            #leftBtn {
                position: absolute;
                left: 10px;
                top: 50%;
                transform: translateY(-50%);
            }
            #rightBtn {
                position: absolute;
                right: 10px;
                top: 50%;
                transform: translateY(-50%);
            }
        </style>
    </head>
    <body>
        <div class="container">
            <ul class="content-list">
                <li class="item active"></li>
                <li class="item"></li>
                <li class="item"></li>
                <li class="item"></li>
            </ul>
            <ul class="order">
                <li class="item1 item1Active">1</li>
                <li class="item1">2</li>
                <li class="item1">3</li>
                <li class="item1">4</li>
            </ul>
            <button id="leftBtn" class="hideBtn"><</button>
            <button id="rightBtn" class="hideBtn">></button>
        </div>
        <script>
            let container = document.querySelector('.container');
            let items = document.querySelectorAll('.item');
            let item1s = document.querySelectorAll('.item1');
            let leftBtn = document.querySelector('#leftBtn');
            let rightBtn = document.querySelector('#rightBtn');
            // 当前索引index
            let index = 0;
            function changeIndex() {
                for (let i = 0; i < items.length; i++) {
                    items[i].classList.remove('active');
                    item1s[i].classList.remove('item1Active');
                }
                items[index].classList.add('active');
                item1s[index].classList.add('item1Active');
            }

            function goLeft() {
                if (index > 0) {
                    index--;
                } else {
                    index = 3;
                }
                changeIndex();
            }

            function goRight() {
                if (index < 3) {
                    index++;
                } else {
                    index = 0;
                }
                changeIndex();
            }
            // 给左按钮和右按钮绑定点击事件,达到轮播图切换的效果
            leftBtn.addEventListener('click', goLeft);
            rightBtn.addEventListener('click', goRight);

            // 给底部小圆点增加自定义属性index,标记为索引,方便为小圆点绑定点击事件
            for (let i = 0; i < item1s.length; i++) {
                item1s[i].addEventListener('click', function () {
                    index = i;
                    changeIndex();
                });
            }
            // 声明定时器，达到轮播图自动向后切换的效果
            let timer;
            timer = setInterval(() => {
                goRight();
            }, 2000);

            // 鼠标移到当前容器触发的事件，两个按钮显示，关闭定时器
            container.addEventListener('mouseover', function () {
                leftBtn.className = 'showBtn';
                rightBtn.className = 'showBtn';
                // 暂停定时器
                clearInterval(timer);
            });
            // 鼠标离开当前容器触发的事件，两个按钮隐藏，重新开启定时器
            container.addEventListener('mouseleave', function () {
                leftBtn.className = 'hideBtn';
                rightBtn.className = 'hideBtn';
                // 再次打开定时器
                timer = setInterval(() => {
                    goRight();
                }, 2000);
            });
        </script>
    </body>
</html>
